home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 May: Tool Chest / Developer CD Series Tool Chest (Apple Computer)(May 1999).iso / Tool Chest / Development Kits / MPW Related / DTS MPW Goodies / SetMFSize < prev    next >
Encoding:
Text File  |  1990-09-14  |  4.2 KB  |  155 lines  |  [TEXT/MPS ]

  1. ##*****************************************************************************
  2. ##
  3. ##  Project Name:    UserScripts
  4. ##     File Name:    SetMFSize
  5. ##
  6. ##   Description:    This script will set the current Multifinder partition
  7. ##                    size to the size specified, or to the default (by
  8. ##                    removing the SIZE 0 resource).
  9. ##
  10. ##*****************************************************************************
  11. ##                       A U T H O R   I D E N T I T Y
  12. ##*****************************************************************************
  13. ##
  14. ##    Initials    Name
  15. ##    --------    -----------------------------------------------
  16. ##    GLA            Glenn L. Austin
  17. ##
  18. ##*****************************************************************************
  19. ##                      R E V I S I O N   H I S T O R Y
  20. ##*****************************************************************************
  21. ##
  22. ##      Date        Time    Author    Description
  23. ##    --------    -----    ------    ---------------------------------------------
  24. ##    08/19/89    10:21    GLA        Original version
  25. ##
  26. ##*****************************************************************************
  27.  
  28. set exit 0
  29. set echo 0
  30.  
  31. set setDefault false
  32. set confirmSize ask
  33. set newSize -1
  34.  
  35. loop
  36.     if "{1}" =~ /-?+/            # Is this an option?
  37.     else
  38.         break
  39.     end
  40.     if "{1}" =~ /-[DMSYNHdmsynh]/        # is this one of my options?
  41.         if "{1}" =~ /-[Dd]/            # Set to default size
  42.             set setDefault true
  43.         end
  44.         if "{1}" =~ /-[Mm]/            # Set to minimum size
  45.             set newSize 0
  46.             set confirmSize true    # if the minimum size happens not to be an even K,
  47.                                     # set it anyway!
  48.         end
  49.         if "{1}" =~ /-[Ss]/            # set to size...
  50.             shift 1                    # shift once right (to get to the size parameter)
  51.             set newSize {1}            # get the new size (in K)
  52.         end
  53.         if "{1}" =~ /-[Yy]/            # the new size is pre-confirmed
  54.             set confirmSize true    # if the new size < min size, set it anyway!
  55.         end
  56.         if "{1}" =~ /-[Nn]/            # the new size is not pre-confirmed
  57.             set confirmSize false    # if the new size < min size, don't change anything!
  58.         end
  59.         if "{1}" =~ /-[Hh]/        # Help!
  60.             echo 'Syntax:  SetMFSize [-D] [-S size[M|K]] [-Y] [-N] [-H] appname'
  61.             exit
  62.         end
  63.     else
  64.         echo "### Error:  Undefined option ∂"{1}∂"" >Dev:Console
  65.         exit 1
  66.     end
  67.     shift 1
  68. end
  69.  
  70. if "{1} " == " "
  71.     echo "### Error:  No file specified!" >Dev:Console
  72.     exit 1
  73. end
  74.  
  75. if ({setDefault == false) && ({newSize} == -1)
  76.     echo "### Error:  No size specified!" >Dev:Console
  77.     exit 1
  78. end
  79.  
  80. set file "{1}"
  81.  
  82. files -t 'APPL' "{file}" ∑Dev:Null
  83. if {status} != 0
  84.     echo "### Error:  {file} is not an application!" >Dev:Console
  85.     exit 2
  86. end
  87.  
  88. if {newSize} == 0        # set to minimum size!
  89.     set newSize `GetMFSize -m "{file}"`
  90.     ( evaluate "{newSize}" =~ /?*=([0-9]+)®1K?*/ ) ∑Dev:Null
  91.     set newSize {®1}
  92.     unset ®1
  93. end
  94.  
  95. if {setDefault} == true
  96.     echo "delete ∂'SIZE∂' (0);" | rez -a -o "{file}"
  97. else
  98.     set minSize `GetMFSize -m "{file}"`
  99.     ( evaluate "{minSize}" =~ /?*=([0-9]+)®1K?*/ ) ∑Dev:Null
  100.     set minSize {®1}
  101.     unset ®1
  102.     
  103.     ( evaluate "{newSize}" =~ /([0-9]+)®1(?«0,1»)®2?*/ ) ∑Dev:Null
  104.     set newSize {®1}
  105.     set sizeMult "{®2}"
  106.     unset ®1 ®2
  107.     if "{sizeMult} " == " "
  108.         set sizeMult "K"
  109.     end
  110.     if {sizeMult} =~ /[Mm]/        # Megabytes
  111.         ( evaluate newSize = {newSize} * 1024 ) ∑Dev:Null
  112.         set sizeMult "K"
  113.     end
  114.  
  115.     if {minSize} > {newSize}
  116.         if {confirmSize} == ask
  117.             confirm "Are you sure you want to set the partition size to less than the minimum?"
  118.             if {status} == 0
  119.                 set confirmSize true
  120.             else
  121.                 set confirmSize false
  122.             end
  123.         end
  124.         if {confirmSize} == false    # Oops!  too small!
  125.             echo "### Error:  Requested Multifinder partition size less than minimum size!" >Dev:Console
  126.             exit 3
  127.         end
  128.     end
  129.     
  130.     ( evaluate newSize = {newSize} * 1024 ) ∑ Dev:Null
  131.         
  132.     derez -only 'SIZE' "{file}" "{RIncludes}"Types.r >"{MPW}"Tempfile ≥Dev:Null
  133.     open "{MPW}"Tempfile
  134.     find • "{MPW}"Tempfile
  135.     echo "∂#include ∂"Types.r∂"∂n" >"{MPW}"Tempfile.§
  136.     find /resource ∂'SIZE∂' ∂(-1/ "{MPW}"Tempfile
  137.     if {status} == 0
  138.         find • "{MPW}"Tempfile
  139.         find /resource ∂'SIZE∂' ∂(0/:/∂};/ "{MPW}"Tempfile
  140.         echo -n "" >"{MPW}"Tempfile.§
  141.         find • "{MPW}"Tempfile
  142.         find /resource ∂'SIZE∂' ∂(-1/ "{MPW}"Tempfile
  143.         echo -n "resource ∂'SIZE∂' ∂(0" >"{MPW}"Tempfile.§
  144.     end
  145.     find /[0-9]+,/ "{MPW}"Tempfile
  146.     echo -n "{newSize}," >"{MPW}"Tempfile.§
  147.     close -y "{MPW}"Tempfile
  148.     
  149.     rez -a -o "{file}" "{MPW}"Tempfile
  150.     
  151.     delete -y "{MPW}"Tempfile
  152. end
  153.  
  154. exit
  155.